s = input()
n = len(s)
ans = 0
for i in range(n-1,-1,-1):
b = int(s[i])
if b%4==0:
ans+=1
if i:
a = int(s[i-1])
num = a*10+b
if num%4==0:
ans+=i
print(ans)
#include<bits/stdc++.h>
#define ll long long
#define sz size()
#define vt vector
#define ct const
#define pb push_back
#define Fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
using namespace std;
ll t, n, m, i, j, r1 = 0, ans, l, als = 0, r2, r3, r4, k, mnn, ii, x, y;
string d1, d2, d3, d4;
int main()
{
Fast;
cin >> d1;
ans = 0;
n = d1.size() - 1;
for(i=0;i<=n;i++){
if(int(d1[i] - 48) % 4 == 0)ans++;
}
for(i=0;i<n;i++){
r1 = int(d1[i] - 48)*10 + int(d1[i+1] - 48);
// cout << r1 << " ";
if(r1 % 4 == 0){
ans += i+1;
}
}
cout << ans ;
return 0;
}
/**--|-name---8--8---!---!---!---!---8--8---name-|--**/
//---|-name---8--8---!---!---!---!---8--8---name-|--///
//---|--------0--8-------------------8--0--------|--///
//---|--------0--8-(Welcome-To-Code)-8--0--------|--///
//---|--------0--8-------------------8--0--------|--///
//---|-name---8--8---!---!---!---!---8--8---name-|--///
/**--|-name---8--8---!---!---!---!---8--8---name-|--**/
/**--|-------------------------------------------|--**/
/**--|------(-DoN'T-GivE-Up-YoU-Can-DO-iT-)------|--**/
/**--|-------------------------------------------|--**/
/**--|-name---8--8---!---!---!---!---8--8---name-|--**/
/**--|-name---8--8---!---!---!---!---8--8---name-|--**/
1529A - Eshag Loves Big Arrays | 19. Remove Nth Node From End of List |
925. Long Pressed Name | 1051. Height Checker |
695. Max Area of Island | 402. Remove K Digits |
97. Interleaving String | 543. Diameter of Binary Tree |
124. Binary Tree Maximum Path Sum | 1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts |
501A - Contest | 160A- Twins |
752. Open the Lock | 1535A - Fair Playoff |
1538F - Interesting Function | 1920. Build Array from Permutation |
494. Target Sum | 797. All Paths From Source to Target |
1547B - Alphabetical Strings | 1550A - Find The Array |
118B - Present from Lena | 27A - Next Test |
785. Is Graph Bipartite | 90. Subsets II |
1560A - Dislike of Threes | 36. Valid Sudoku |
557. Reverse Words in a String III | 566. Reshape the Matrix |
167. Two Sum II - Input array is sorted | 387. First Unique Character in a String |